package com.heima.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.heima.exception.BaseException;
import com.heima.mapper.SkuMapper;
import com.heima.pojo.dto.SkuDto;
import com.heima.pojo.dto.SkuSearchDto;
import com.heima.pojo.entity.Sku;
import com.heima.pojo.vo.SkuSearchVo;
import com.heima.pojo.vo.SkuVo;
import com.heima.service.SkuService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import java.util.List;

/**
 * @author ljk74
 */
@Service
@RequiredArgsConstructor
public class SkuServiceImpl implements SkuService {
    private final SkuMapper skuMapper;

    @Override
    public void addSku(SkuDto skuDto) {
        List<Sku> isExist = skuMapper.selectByName(skuDto);
        if (!CollectionUtils.isEmpty(isExist)) {
            throw new BaseException("商品已存在");
        }
        Sku sku = new Sku();
        BeanUtils.copyProperties(skuDto, sku);
        skuMapper.insert(sku);
    }

    @Override
    public SkuSearchVo pageQuery(SkuSearchDto skuSearchDto) {
        skuSearchDto.check();
        PageHelper.startPage(skuSearchDto.getPageIndex(), skuSearchDto.getPageSize());
        List<SkuVo> list = skuMapper.pageQuery(skuSearchDto);
        Page<SkuVo> p = (Page<SkuVo>) list;
        Long total = p.getTotal();

        SkuSearchVo skuSearchVO = new SkuSearchVo();
        skuSearchVO.setPageIndex(String.valueOf(skuSearchDto.getPageIndex()));
        skuSearchVO.setPageSize(String.valueOf(skuSearchDto.getPageSize()));
        skuSearchVO.setTotalCount(String.valueOf(total));
        skuSearchVO.setTotalPage(String.valueOf((int) Math.ceil((double) total / skuSearchDto.getPageSize())));
        skuSearchVO.setCurrentPageRecords(p.getResult());
        return skuSearchVO;
    }

    @Override
    public void update(String skuId, SkuDto skuDto) {
        Sku isExist = skuMapper.findById(skuId);
        if (isExist == null) {
            throw new BaseException("要修改的商品不存在");
        }
        skuMapper.updateSku(skuId,skuDto);
    }


}
